// 1. 安装express-session

// 导入中间件
const verify = require('./middlewares/verifyLogin');

// 2. 导入express-session模块
const expS = require('express-session');
// 3. 导入express模块
const exp = require('express');
// 4. 创建express对象
const app = exp();
// 5. 调用并配置session中间件
app.use(expS({
    // 5.1 参数："name" = 设置cookie的name，默认值是：connect.sid
    // 5.2 参数："secret" = 参与加密的字符串（又称签名）
    secret:"2023-4-26",
    // 5.3 参数："saveUninitialized" = 是否为每次请求都设置一个cookie用来存储
    saveUninitialized:false,
    // 5.3 参数："resave" = 强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false
    resave:true,
    // 5.4 参数："cookie" = 存储到cookie的相关配置
    cookie:{
        // 5.4.1 参数："httpOnly" 开启后,前端无法通过 JS 操作
        httpOnly:true,
        // 5.4.2 参数："maxAge"  控制 sessionID 的过期时间
        maxAge:1000*60*60
    }    
}))
   
// 6 配置get路由 - 设置session - 提交登录信息
app.get('/setSession',(req,res)=>{
    // 6.1 将数据存入session的自定义属性内 - req.session.name = value
    req.session.username = 'laowang';
    req.session.email = '1392321323@163.com';
    req.session.phone = '12123123123123123';
    req.session.avatar = '/img/1.png';
    // 6.2 返回响应
    res.send('登录成功');
})
    
// 7 配置get路由 - 进入个人中心页
app.get('/center',verify,(req,res)=>{
    // 7.2.1 如果存在session，响应个人中心页内容 
    res.send('个人中心页');
})
   
// 8. 配置get路由 - 删除session - 退出登录
app.get('/logout',verify,(req,res)=>{
    // 8.1.1如果存在，删除session - req.destroy(callback)
    req.session.destroy(()=>{
            // 8.1.1.1 在回调中返回响应
        res.send('退出成功');
    })
})

app.get('/cart',verify,(req,res)=>{
    res.send('购物车页面');
})
  
// 9 配置get路由 - 登录页面
app.get('/login',(req,res)=>{
    res.send('请登录');
})
// 10 监听端口服务
app.listen(80);
    